import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Code_56 {
    public int[][] merge(int[][] intervals) {
        // 先对区间按照起始值进行排序
        //a 和 b 分别是 intervals 数组中的两个子数组（每个子数组都是 int[]）,我们需要比较 a 和 b 的第一个元素（即 a[0] 和 b[0]），从而决定这两个子数组的顺序。
        Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));
        int[] pre = intervals[0];
        List<int[]> res =new ArrayList<>();
        for (int i = 1; i < intervals.length; i++) {
            if (pre[1]>= intervals[i][0]){
                pre[1] = Math.max(pre[1], intervals[i][1]);
            }else {
                res.add(pre);
                pre=intervals[i];
            }
        }
        res.add(pre);
        return res.toArray(new int[res.size()][]);
    }
}
